init
This commit is contained in:
commit
9f1862f150
8 changed files with 56 additions and 0 deletions
3
.clang-format
Normal file
3
.clang-format
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
BasedOnStyle: LLVM
|
||||||
|
IndentWidth: 4
|
||||||
|
|
2
.clangd
Normal file
2
.clangd
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
CompileFlags:
|
||||||
|
Add: [-std=gnu23]
|
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
|
@ -0,0 +1 @@
|
||||||
|
main
|
8
Makefile
Normal file
8
Makefile
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
CFLAGS := -Wall -Wextra
|
||||||
|
|
||||||
|
main: main.c
|
||||||
|
gcc ${CFLAGS} -o $@ $^
|
||||||
|
|
||||||
|
.PHONY: clean
|
||||||
|
clean:
|
||||||
|
-rm main
|
3
README.adoc
Normal file
3
README.adoc
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
= Cからシェルスクリプトを呼ぶテスト
|
||||||
|
* 作業ディレクトリが変わらないので注意
|
||||||
|
* 適切にオプションを設定しないとエラー検知できないので注意
|
23
main.c
Normal file
23
main.c
Normal file
|
@ -0,0 +1,23 @@
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
|
||||||
|
int main(int argc, char **argv) {
|
||||||
|
const auto cmd = "./subdir/entry.sh";
|
||||||
|
FILE *f = popen(cmd, "r");
|
||||||
|
if (f == NULL) {
|
||||||
|
perror("popen failed");
|
||||||
|
return EXIT_FAILURE;
|
||||||
|
}
|
||||||
|
char buf[1024];
|
||||||
|
while (fgets(buf, sizeof(buf), f)) {
|
||||||
|
printf("read: %s", buf);
|
||||||
|
}
|
||||||
|
|
||||||
|
int ret = pclose(f);
|
||||||
|
if (ret == -1) {
|
||||||
|
perror("pclose failed");
|
||||||
|
return EXIT_FAILURE;
|
||||||
|
};
|
||||||
|
printf("Return code: %d", ret);
|
||||||
|
return EXIT_SUCCESS;
|
||||||
|
}
|
5
subdir/called.sh
Executable file
5
subdir/called.sh
Executable file
|
@ -0,0 +1,5 @@
|
||||||
|
echo "Hi, this is called"
|
||||||
|
echo "\${0}: ${0}"
|
||||||
|
pwd
|
||||||
|
echo "Good bye"
|
||||||
|
exit 1
|
11
subdir/entry.sh
Executable file
11
subdir/entry.sh
Executable file
|
@ -0,0 +1,11 @@
|
||||||
|
#!/bin/env bash
|
||||||
|
set -euo pipefail
|
||||||
|
echo "Hi, this is entry.sh"
|
||||||
|
echo "pwd:"
|
||||||
|
pwd
|
||||||
|
echo "\${0}: ${0}"
|
||||||
|
cd "$(dirname "${0}")"
|
||||||
|
./called.sh
|
||||||
|
echo $?
|
||||||
|
echo "returned"
|
||||||
|
exit 0
|
Loading…
Reference in a new issue