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");