Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/149.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用system()时使用的隐藏控制台命令?C++;Linux 我将简单明了地说:我是C++的Payb。但仍在努力学习_C++_Linux - Fatal编程技术网

使用system()时使用的隐藏控制台命令?C++;Linux 我将简单明了地说:我是C++的Payb。但仍在努力学习

使用system()时使用的隐藏控制台命令?C++;Linux 我将简单明了地说:我是C++的Payb。但仍在努力学习,c++,linux,C++,Linux,我的问题是:是否可以使用system()命令通过终端运行命令,而不让命令显示在控制台/终端中 例如: system("sudo service sshd start") ; Output: Sudo service sshd start 如我所愿: system("sudo service sshd start") ; output: (Blank) 注意:我在linux上。标准库函数启动子shell,并将提供的字符串作为该子shell中的命令执行。(请注意,子shell只是一个运行shel

我的问题是:是否可以使用system()命令通过终端运行命令,而不让命令显示在控制台/终端中

例如:

system("sudo service sshd start") ;
Output: Sudo service sshd start
如我所愿:

system("sudo service sshd start") ;
output: (Blank)

注意:我在linux上。

标准库函数启动子shell,并将提供的字符串作为该子shell中的命令执行。(请注意,子shell只是一个运行shell解释器的进程;
system
调用的特定shell解释器将取决于您的系统。不使用终端仿真器;至少在Unix或类似Unix的系统上不使用。)

系统
函数在启动子shell之前不会重新分配任何文件描述符,因此该命令使用当前的标准输入、输出和错误分配执行。许多命令将输出到stdout和/或stderr,这些输出不会被
系统
抑制

如果希望命令以静默方式执行,则可以在命令本身中重定向stdout和/或stderr:

system("sudo service sshd start >>/dev/null 2>>/dev/null") ;
当然,这将隐藏任何可能由于命令失败而导致的错误消息,因此您应该检查
system
的返回值,如果不是0,则提供您自己的错误消息(或记录信息)


这实际上与
系统
调用或您从自己的可执行文件中触发子shell的事实关系不大。如果直接在shell中键入相同的命令,则该命令将具有相同的行为。

从GNU libc使用。我无法重现该症状。我看到的是命令的输出,而不是命令本身。您是否在询问如何抑制命令的输出?如果是这样,它与C++无关。可能的副本也可以使用<代码>系统(“SUDO服务SSHD启动和> /DEV/NULL”);代码>。它比较短,并且执行的操作完全相同。@marccoll:
&
是一个bash扩展,并且不能保证
系统
调用
bash
。它可能在您的机器上工作,但通常不能依赖它。即使在Code::Blocks IDE调试模式下也可以正常工作。谢谢你。但是我用的是
而不是
>
。有什么问题吗?@sopalajo:
的语义涉及到截断目标文件,在某些实现中,截断
/dev/null
可能是不允许的。(在其他系统上,比如Linux,它不做任何事情。)因此,通常使用
>>
来附加到
/dev/null
,这是可以保证工作的。