2010-08-09 78 views
-9

任何人都可以告诉我下面的代码的输出,是否打印“再见”?Linux系统()API

#include <stdio.h> 

int main() 
{ 

system("ls -l"); 
printf("bye"); 

return 0; 
} 
+3

这是不礼貌的吆喝......请不要全部大写书写。 – 2010-08-09 12:09:07

+3

如果你编译并运行代码,会不会更容易? – banx 2010-08-09 12:11:30

+1

我编辑了这个删除SHOUTING ....我们不是介意读者,并为你做肮脏的工作...试试看,为自己....我投票结束这个问题,因为它是无用的.... – t0mm13b 2010-08-09 12:13:42

回答

1

是的,它将被打印。

为什么不编译它并自己测试它?剪切并粘贴您写入文件的内容,例如foo.c的,然后执行以下

gcc -o foo foo.c 
./foo 

由于没有换行符你的printf(“再见”)后,它会在当前行的开始结束;将printf(“bye \ n”)改为稍微清晰一点。

8

man system说:

int system(const char *command); 

system()通过调用/bin/sh -c command执行command指定的命令,指令后返回已经完成。

而且system()返回后,您的printf将被执行。

+0

好吧,我不是那种通过写在帽子大喊。 刚刚从堆栈溢出新,我写它在帽子,以便它应该去适当的队列.. 另外,Mr.tommieb75,我们在这里交换我们的答案,不会互相侮辱,只是因为我们中的一个人知道回答。 你写得如此粗鲁,如果你不能给我答案,那么最好保持沉默或者以礼貌的方式暗示我。 我相信你已经成熟到足以拥有这种感觉。 其论坛,帮助别人不喜欢被迫帮忙! – mint9 2010-08-17 06:59:54

0

为什么不呢?没有条件语句,因此代码的每个部分都会被执行。

它将打印由系统提供的命令的输出,然后打印“拜拜”

0

该计划是要执行ls -l就好了。

此外,“再见”应该确实打印。但是,由于您没有包含'\ n'字符,因此只有在附加提示后才能看到它。另外,如果您没有看到它,那么出于某种原因,当程序退出时,您的输出不会刷新。如果这是你所看到的,添加'\ n'字符可能会很好地解决这个问题。

0

这一切都取决于可用内存。 您需要检查系统命令的返回值,成功时返回0。 您的printf语句将被调用,但不确定该系统命令将始终成功。

感谢, 尼尔

+0

感谢您的回答.. – mint9 2010-08-17 07:01:19