c++语言获取shell命令执行结果
时间: 2023-08-18 10:33:52 浏览: 51
在C++语言中,可以使用`popen()`函数获取shell命令执行结果。`popen()`函数可以打开一个进程,并且返回一个文件指针,该文件指针指向进程的标准输出流。通过读取该文件指针的内容,就可以获取到shell命令的输出结果。
下面是一个示例代码,演示如何使用`popen()`函数获取`ls -l`命令的输出结果:
```c++
#include <iostream>
#include <cstdio>
int main() {
FILE *fp;
char path[1035];
/* 打开进程并读取结果 */
fp = popen("ls -l", "r");
if (fp == NULL) {
std::cout << "Failed to run command" << std::endl;
return 1;
}
/* 读取命令输出结果 */
while (fgets(path, sizeof(path), fp) != NULL) {
std::cout << path;
}
/* 关闭进程 */
pclose(fp);
return 0;
}
```
在这个示例代码中,我们使用`popen()`函数打开了一个`ls -l`命令,并将返回的文件指针存储在`fp`变量中。然后,我们使用`fgets()`函数逐行读取命令的输出结果,并将其打印到控制台上。最后,我们使用`pclose()`函数关闭进程。
相关问题
c++执行shell命令
在C语言中,有几种方式可以执行shell命令。一种方式是使用popen函数,该函数会调用fork来产生子进程,并建立一个管道连接到输入输出。通过调用popen函数,我们可以执行shell命令,并获取到命令执行的结果。下面是一个使用popen函数执行shell命令的示例代码:
```
#include <iostream>
#include <unistd.h>
#include <sys/types.h>
int main() {
FILE *pp = popen("cd /xxxx && ls -l", "r");
if (!pp) {
return 1;
}
char tmp<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *2* [C++执行shell命令](https://blog.csdn.net/u012234115/article/details/89215980)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"]
- *3* [超详细Java入门到精通自学视频课程-04、static:访问的注意事项总结拓展.rar](https://download.csdn.net/download/weixin_54787054/88280689)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"]
[ .reference_list ]
sqlite C++ 获取update 执行结果
在SQLite C语言接口中,可以使用sqlite3_changes()函数获取上一次执行UPDATE语句后受影响的行数。该函数返回一个整数值,表示受影响的行数。例如:
```
sqlite3_exec(db, "UPDATE person SET age=30 WHERE name='John'", NULL, NULL, &errmsg);
int rows = sqlite3_changes(db);
printf("受影响的行数:%d\n", rows);
```
如果UPDATE语句执行成功,rows变量将会保存受影响的行数。如果UPDATE语句没有影响任何行,rows变量将会为0。如果UPDATE语句执行失败,将会返回一个负数,表示错误码。需要注意的是,sqlite3_changes()函数只能获取上一次执行UPDATE语句的结果,如果需要获取多次执行UPDATE语句的结果,需要在每次执行UPDATE语句后调用一次该函数。