initial commit
This commit is contained in:
@@ -0,0 +1,64 @@
|
||||
# bi_popen
|
||||
|
||||
## Description
|
||||
`bi_popen`
|
||||
|
||||
Creates two pipes, forks, and runs the given command. One pipe is
|
||||
connected between the given *in and the standard input stream of the child;
|
||||
the other pipe is connected between the given *out and the standard output
|
||||
stream of the child.
|
||||
|
||||
Returns the pid of the child on success, -1 otherwise. On error, errno
|
||||
will be set accordingly.
|
||||
|
||||
## Table of Contents
|
||||
|
||||
* [Features](#features)
|
||||
* [Todos](#todos)
|
||||
* [Usage](#usage)
|
||||
* [Acknowledgments](#acknowledgments)
|
||||
* [License](#license)
|
||||
|
||||
|
||||
## Features
|
||||
|
||||
## Todos
|
||||
|
||||
## Usage
|
||||
|
||||
```c
|
||||
int main(void)
|
||||
{
|
||||
FILE* in = NULL;
|
||||
FILE* out = NULL;
|
||||
char* line = NULL;
|
||||
size_t size = 0;
|
||||
|
||||
const int pid = bi_popen("/bin/bash", &in, &out);
|
||||
if (pid < 0) {
|
||||
perror("bi_popen");
|
||||
return 1;
|
||||
}
|
||||
|
||||
fprintf(in, "date\n");
|
||||
getline(&line, &size, out);
|
||||
printf("-> %s", line);
|
||||
|
||||
// Since in this case we can tell the child to terminate, we'll do so
|
||||
// and wait for it to terminate before we close down.
|
||||
fprintf(in, "exit\n");
|
||||
waitpid(pid, NULL, 0);
|
||||
|
||||
fclose(in);
|
||||
fclose(out);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
```
|
||||
|
||||
## Acknowledgments
|
||||
[Unix Stack Exchange](https://unix.stackexchange.com/questions/606861/programming-communicating-with-chess-engine-stockfish-fifos-bash-redirecti)<br>
|
||||
## License
|
||||
This project is licensed under the MIT License - see the [MIT License](LICENSE.md) file for details.
|
||||
|
||||
Reference in New Issue
Block a user