Ну, единственное, что я могу рассказать вам, это getters:
var foo = {
a: 5,
b: 6,
get c () {
return this.a + this.b;
}
};
foo.c; // 11
Это синтаксическое расширение, введенное спецификацией ECMAScript 5th Edition, синтаксис поддерживается большинством современных браузеров (в том числе IE9).
Одна из идей из комментария полностью ответила на мой вопрос (к точным потребностям, которые у меня были). Не уверен, как отдать ему должное здесь.
Решение состоит в том, чтобы просто закрыть стандартный ввод прямо перед использованием execvp (). Если команда не была выполнена при первом сканировании, программа выдает ошибку, которая является идеальной. Поскольку я запускаю основную программу, которую я использую в цикле, я могу использовать dup и dup2 для сохранения и перезагрузки стандартного ввода позже.
Код, который я использовал для проверки работоспособности:
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <fcntl.h>
#include <unistd.h>
int main(int argc, char* argv[]) {
char command[1000];
int stdinput = dup(STDIN_FILENO);
close(STDIN_FILENO);
dup2(stdinput, STDIN_FILENO);
printf("Enter command: ");
scanf("%[^\n]s", command);
printf("%s\n", command);
}