Họ tên | Trần Nguyễn Thái Bình |
---|---|
MSSV | 23520161 |
Lớp | IT007.P19.1 |
<aside> 👌
Chương trình được viết bằng ngôn ngữ C
Argument 0 truyền chương trình không nhất thiết phải là tên file, có thể để là chuỗi trống
</aside>
Trong thư mục hiện tại có các file sau:
bt2.sh
#!/usr/bin/env bash echo "--- START $0 ---" echo "\\$1: $1" echo "\\$2: $2" [ -n "$NAME" ] && echo "Hello $NAME" if [ -n "$MSSV" ]; then echo "\\$MSSV is set as: $MSSV" else echo "\\$MSSV is not set" fi echo "--- END $0 ---"
MSSV.txt
Hello 23520161
<aside> ⚠️
Nên có NULL
ở danh sách tham số, mảng tham số, mảng thiết lập biến môi trường,... để chương trình chạy như mong đợi
</aside>
execl
Cú pháp
execl(const char *path, const char *arg, ..., NULL);
Giải thích tham số
path
: File path (cụ thể) tới chương trình thực thiarg
: Các đối số truyền vào chương trình thực thiVí dụ
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int main(int argc, char *argv[])
{
execl("./bt2.sh", "", "arg1", "arg2", NULL);
return 0;
}
Output
--- START ./bt2.sh ---
$1: arg1
$2: arg2
$MSSV is not set
--- END ./bt2.sh ---
execlp
Cú pháp
execlp(const char *file, const char *arg, ..., NULL);
Giải thích tham số
file
: File tới chương trình thực thi trong path (biến PATH
)arg
: Các đối số truyền vào chương trình thực thiVí dụ
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int main(int argc, char *argv[])
{
execlp("cat", "", "MSSV.txt", NULL);
return 0;
}
Output
Hello 23520161
execle
Cú pháp
execle(const char *path, const char *arg, ..., NULL, char *const envp[]);
Giải thích tham số
path
: File path (cụ thể) tới chương trình thực thiarg
: Các đối số truyền vào chương trình thực thienvp
: Mảng các chuỗi thiết lập biến môi trườngVí dụ
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int main(int argc, char *argv[])
{
const char *ENV[] = {"MSSV=23520161", "NAME=KevinNitro", NULL};
execle("bt2.sh", "", "arg1", "arg2", NULL, ENV);
return 0;
}
Output
--- START bt2.sh ---
$1: arg1
$2: arg2
Hello KevinNitro
$MSSV is set as: 23520161
--- END bt2.sh ---
exect