使用system()或exec(),我可以获得任何执行命令,但是它们会将结果显示在控制台中.我想执行命令并提取输出并处理它,然后显示它.如何在Windows/DOS平台上实现此目的?
要获取文件的类型,我们可以执行命令
system("file --mime-type -b filename");
Run Code Online (Sandbox Code Playgroud)
输出显示在终端中。但无法使用该命令存储文件类型
char file_type[40] = system("file --mime-type -b filename");
Run Code Online (Sandbox Code Playgroud)
那么如何使用 system(file) 函数将文件类型存储为字符串。
我需要运行Linux CLI命令并从C获取其stdout输出.
我可以使用pipe()创建一个管道,然后使用fork/exec,在调用exec()之前将child的stdout描述符重定向到管道,并从父管道中读取.另外,我需要等孩子.
是否有一个简单的调用fork + redirect + exec + wait,就像system()执行fork + exec + wait一样,只有system()不执行重定向.
有popen(),它执行fork + redirect + exec,但是没有等待,所以我无法获得退出状态.
我有这样的结构:
typedef struct
{
int a;
int b;
int c;
int d;
} Hello;
Run Code Online (Sandbox Code Playgroud)
然后我以这种方式宣布它:
Hello hello[6] = {};
Run Code Online (Sandbox Code Playgroud)
然后我收到了这个警告:ISO C禁止空初始化器括号,无论如何我认为我需要初始化它,如何以正确的方式做到这一点?
我有这个c ++程序在指定的IP地址上进行简单的ping操作.我没有进入网络,所以我只是在c ++中使用system()命令从shell执行ping并将结果存储在一个文件中,这很容易.
问题是我想在执行system()命令时在屏幕上打印一些点.我尝试过:
while(system(cmd))
{
//execute the task here
}
Run Code Online (Sandbox Code Playgroud)
但没有成功.我认为我应该创建线程或东西.
你能帮助我吗 ?我应该做什么才能按照我的意愿完成这项工作?
我正在尝试写入stdin并从外部程序读取stdout(和stderr),而不更改代码.
我尝试过使用命名管道,但是直到程序终止并且stdin只对第一个输入起作用(然后cin为null)才会显示stdout.
我已经尝试使用/ proc/[pid]/fd,但只能从终端而不是程序进行写入和读取.
我已经尝试为此编写一个字符设备文件并且它可以工作,但一次只能有一个程序(这需要一次为多个程序工作).
在这一点上,据我所知,我可以编写驱动程序,在多个程序中复用io,但我认为这不是"正确"的解决方案.
这样做的主要目的是通过Web界面查看程序的订阅源.我确信必须要做到这一点.有什么我以前没有尝试过的吗?
我知道如何使用事件来测试按键的位置,但在C中我从未发现如何做到这一点.
我真正想要的是一个听取上,下,左,右键的Keylistener.我需要它在Linux中工作,所以没有Windows库.如果可能的话,不使用第三方库对我来说是最好的选择.
int main(){
//关键监听器{
// if(key == up){//做某事}
// if(key == down){//做某事}
// if(key == left){//做某事}
// if(key == right){//做某事}
//}
}