На Си аргументы командной строки можно модифицировать, чтобы изменения были видны в списке процессов (ps ax | grep название_проги). Например:
#include <stdio.h>
#include <unistd.h>
int main(int argc, char *argv[]) {
if (argc < 2) {
fprintf(stderr, "Добавьте аргумент.\n"
return 1;
}
for (int i = 0; argv[1][i] != '\0'; i++) {
argv[1][i] = '*';
}
for (; {
sleep(10);
}
return 0;
}
Но попробовал аналогичное написать на Go и обломался:
package main
import (
"fmt"
"os"
"time"
)
func main() {
if len(os.Args) < 2 {
fmt.Fprintf(os.Stderr, "Добавьте аргумент.\n"
os.Exit(1)
}
var s string
max := len(os.Args[1])
for i := 0; i < max; i++ {
s += "*"
}
os.Args[1] = s
for {
time.Sleep(10 * time.Second)
}
}
Как на Go правильно менять аргумент, чтобы это влияло на его отображение в списке процессов?