It's difficult to tell what is being asked here. This question is ambiguous, vague, incomplete, overly broad, or rhetorical and cannot be reasonably answered in its current form. For help clarifying this question so that it can be reopened, visit the help center
9年前关闭。
char str[256]="cp /home/anup/unix_arch/w1.c /home/anup/Desktop/work.c";
    sprintf(buf, "/bin/sh -c %s", str);
     system(buf);

see the cp --help一个错误,我无法找出原因!
如果我做系统(“vim wave.c”),它会显示一个vim distributors介绍页面
如果我做系统(“rm wave.c”),它会说要再次看到rm --help
请帮我找出问题,主要是,
我想在c程序中执行shell命令(copy)
请大家集思广益。

最佳答案

这里有一些头脑风暴给你。所有这些结果似乎都表明您只将第一个参数传递给了system命令。cp自己会告诉您查看帮助,vim自己会给您提供Vim欢迎屏幕等等。
所以:
你是怎么构造这些弦的?是通过strcpy/strcat吗?
如果您打印出cp命令的前四个字节,您看到了什么?
我问第一个问题的原因是,您可能正在一点一点地构造字符串,以便您可以输入特定的文件名。如果由于某种原因字符串是"cp\0source dest"(带有嵌入的空值),system将只看到cp
第二个问题应该肯定地澄清这一点。
请尝试以下程序,查看它是否以短格式或长格式打印:

#include<stdlib.h>
int main (void) {
    system ("ls -al");
    return 0;
}

你应该得到这样的东西:
total 21
drwxrwxrwt+ 1 pax None     0 2010-11-05 11:38 .
drwxrwxrwt+ 1 pax root     0 2010-10-28 11:22 ..
-rw-------  1 pax None 15815 2010-11-04 16:33 .bash_history
-rw-r--r--  1 pax None    29 2010-11-03 14:05 .bash_profile
-rw-------  1 pax None   191 2010-11-04 16:33 .history
-rw-------  1 pax None    68 2010-11-04 16:15 .lesshst
drwxrwxrwt+ 1 pax None     0 2010-10-28 11:22 .texmf
-rw-r--r--  1 pax None    38 2010-10-29 10:30 qq.awk
-rw-r--r--  1 pax None    97 2010-11-05 11:38 qq.c
-rwxr-xr-x  1 pax None 17790 2010-11-05 11:38 qq
-rw-r--r--  1 pax None   120 2010-11-04 10:18 qq.py

关于c - 我用了sprintf()然后也无法将system()用于cp文件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4103387/

10-15 02:51