如何定义系统()

时间:2018-03-25 17:56:31

标签: c bash operating-system

所以我想定义system()函数!这是我的功能:

#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <stdlib.h>

void mySystem (char *command)
{    
    execlp (command, command, (char*) 0);
}

int main (int argc, char* argv[])
{    
    for (int i = 1; i < argc; i++) 
    {
        char command[50];
        strcpy(command, argv[i]);
        mySystem(command);
    }

    return 0;
}

然后我尝试了它就像那样:

gcc exe6.c;
./a.out ls ls

在这种情况下,它只做一个ls。

./a.out "ls -l"

在这种情况下,没有做任何事情。我做错了什么?

1 个答案:

答案 0 :(得分:5)

man page实际上告诉你如何做到这一点:

  

system()库函数使用fork(2)创建一个子进程,该进程使用execl(3)执行命令中指定的shell命令,如下所示:

execl("/bin/sh", "sh", "-c", command, (char *) 0);
     

system()在命令完成后返回。