红联Linux门户
Linux帮助

system的问题

发布时间:2008-07-30 09:14:45来源:红联作者:doupierlvdou
我有个程序:

#include
#include

int main()
{



char cmdstring1[40]="cd /home/doupierlvdou";
char cmdstring2[10]="ls";
execl("/bin/sh", "sh", "-c", cmdstring1, (char *)0);
execl("/bin/sh", "sh", "-c", cmdstring2, (char *)0);


}


为什么我执行后什么反应都没有呢?
当我注释掉”execl("/bin/sh", "sh", "-c", cmdstring1, (char *)0);“后
就可以打印出当前目录下的文件和子目录了。
当我注释掉“execl("/bin/sh", "sh", "-c", cmdstring1, (char *)0);”后
什么都没有。

请问:
execl("/bin/sh", "sh", "-c", cmdstring1, (char *)0);是不是在后台执行了?
如果是,那么执行的效果怎么看得出来呢?

还有如果我system("cd /home/doupierlvdou");后也没有什么反应.
我以为它不识别空格呢,但是又发现system("mkdir $HOME/.SmartPlatform/");这句话可以执行的!
哎,system让我一头雾水,请江湖人士亮剑。
文章评论

共有 2 条评论

  1. yarges 于 2010-02-03 12:04:49发表:

    system("cd /home/doupierlvdou && ls");
    是进入目录并执行 ls
    system("cd /home/doupierlvdou ");
    进入目录,没有操作
    system("ls");//是针对当前目录的 ls

  2. doupierlvdou 于 2008-07-30 09:21:02发表:

    :0w5ty(1

    我试了一下 system("cd /home/doupierlvdou && ls");
    没想到竟然在终端打印出了相应的子目录和文件了。

    莫非我想要转到一个目录下并且打印出它的子目录和文件就一定要这样才可以吗?

    请问:
    system("cd /home/doupierlvdou && ls");

    system("cd /home/doupierlvdou ");
    system("ls");
    有什么区别呢?

    清江湖人士亮剑!!