| 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.txtHello 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>
execlCú 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 ---
execlpCú 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
execleCú 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