相关疑难解决方法(0)

在C中遇到fork(),pipe(),dup2()和exec()时遇到问题

这是我的代码:

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <wait.h>
#include <readline/readline.h>

#define NUMPIPES 2

int main(int argc, char *argv[]) {
    char *bBuffer, *sPtr, *aPtr = NULL, *pipeComms[NUMPIPES], *cmdArgs[10];
    int fdPipe[2], pCount, aCount, i, status, lPids[NUMPIPES];
    pid_t pid;

    pipe(fdPipe);

    while(1) {
        bBuffer = readline("Shell> ");

        if(!strcasecmp(bBuffer, "exit")) {
            return 0;
        }

        sPtr = bBuffer;
        pCount = -1;

        do {
            aPtr = strsep(&sPtr, "|");
            pipeComms[++pCount] = aPtr;
        } while(aPtr);

        for(i = 0; i < pCount; i++) {
            aCount = -1;

            do { …
Run Code Online (Sandbox Code Playgroud)

c fork pipe exec dup2

9
推荐指数
1
解决办法
3万
查看次数

popen不会捕获命令的所有输出

#include <QGuiApplication>
#include <QQmlApplicationEngine>
#include <QProcess>
#include <QFile>
#include <QDebug>
#include <stdio.h>

int main(int argc, char *argv[])
{
    QGuiApplication app(argc, argv);

    FILE* file1 = popen ("make", "r");

    char buff[5122];

    while(fgets(buff, sizeof(buff), file1)!=NULL)
    {
        qDebug() << "from here: " << buff;
    }


    QQmlApplicationEngine engine;
    engine.load(QUrl(QStringLiteral ("qrc:/main.qml")));
    return app.exec();
}
Run Code Online (Sandbox Code Playgroud)

使用make命令输出是:

QML debugging is enabled. Only use this in a safe environment.
from here: make: Nothing to be done forfirst'.`

使用ping命令输出是:

QML debugging is enabled. Only use …
Run Code Online (Sandbox Code Playgroud)

c linux qt popen

-1
推荐指数
1
解决办法
205
查看次数

标签 统计

c ×2

dup2 ×1

exec ×1

fork ×1

linux ×1

pipe ×1

popen ×1

qt ×1