1

smartctl コマンドを使用するためのこのテスト コードがあります。を使用してパイプを開き、このコマンドpopenの出力を取得します。smartctl

#include <iostream>
#include <cstdio>
#include <cstdlib>

using namespace std;

int main()
{
    cout << "Hello ! " << endl;
    FILE *fp;
    char path[1035];

    /* Open the command for reading. */
    fp = popen("smartctl -A /dev/sda", "r");
    if (fp == NULL) {
        printf("Failed to run command\n" );
        exit(1);
    }

    /* Read the output a line at a time - output it. */
    while (fgets(path, sizeof(path), fp) != NULL) {
        printf("%s", path);
    }

    /* close */
    pclose(fp);
    return 0;
}

明らかに、このプログラムを実行するにはルート権限が必要であり、私が使用するのに適しているのは機能です。このプログラムで使用する機能とその設定方法は?

副次的な質問:ここで、実行可能ファイルの所有権を変更する別の方法を使用しましたが、うまくいきませんでした。誰かが理由を説明できますか? systemこのように使用すると、同じことが機能しませんでしたsystem("smartctl -A /dev/sda > test.txt");

4

0 に答える 0