1
#include<stdio.h>
#include<unistd.h>
#include<string.h>
#define MAXLINIE 100


main(int argc, char* argv[]) {
    if (fork()==0){

        execl("/bin/> temporar.txt", "/bin/> temporar.txt", ">temporar.txt", NULL);

    }
}

基本上,我想做的是使用 unix 中的进程创建一个文件,这是我的代码,但由于某种原因它不起作用,我不太了解该execl命令以及为什么前两个参数必须相同:execl("/bin/ls", "/bin/ls", "-l", NULL);这很好用,有人可以帮帮我吗?

非常感谢!

4

2 回答 2

2

考虑使用 system() 代替:

system("/bin/ls -l > temporar.txt");

或使用 execl 调用/bin/sh重定向流:

execl("/bin/sh", "/bin/sh", "-c" , "/bin/ls -l >temporar.txt", NULL);

execl 的第一个参数是要执行的命令,第二个是要传递给命令的第一个参数 (argv[0]),第三个和下一个 - 其他参数 argv[1] ...

于 2013-04-14T10:57:57.220 回答
2

首先搜索whereistouch

~$ whereis touch
touch: /bin/touch /usr/bin/touch /usr/bin/X11/touch 

使用:int execl(const char *path, const char *arg, ...);

execl("/bin/touch", "touch", "filename", NULL);
          ^            ^         ^         ^
       command       command   argument    
        path           name
                     arg 0     arg 1    
于 2013-04-14T11:03:07.940 回答