如何在c中使用execl命令创建文件

时间:2013-04-14 10:56:31

标签: c unix process os.execl

#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);这个效果很好,有人可以帮帮我吗?

非常感谢!

2 个答案:

答案 0 :(得分: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] ...

答案 1 :(得分: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