31 if (!cmd || !cmd->
args || !cmd->
args[0])
34 while (cmd->
args[i + 1])
73 if (execve(path, cmd->
args, envp) < 0)
int execute_builtin(t_shell *shell, t_cmd *cmd)
int is_builtin(char *cmd)
void shell_exit(t_shell *shell, int exit_code)
Shell'i temizleyip programdan çıkar.
void free_str_array(char **arr)
NULL-terminated string dizisini serbest bırakır.
int update_env_value(t_list *env_list, char *key, char *new_value)
Mevcut env değişkeninin değerini günceller.
char ** create_envp(t_shell *shell)
shell->env_list'i char **envp formatına çevir
void shell_error(char *cmd, char *arg, char *msg)
static void child_exec(t_shell *shell, t_cmd *cmd, char *path)
Bulunan path ile child process'te execve çalıştır.
static void update_underscore(t_shell *shell, t_cmd *cmd)
_ underscore değişkenini son argümanla günceller
int execute_cmd(t_shell *shell, t_cmd *cmd)
Ana komut çalıştırma dispatcher.
int execute_external(t_shell *shell, t_cmd *cmd)
Harici komutu çalıştır — path kontrolü fork öncesi yapılır böylece "command not found" hatası parent'...
int run_builtin_parent(t_shell *shell, t_cmd *cmd)
Builtin'i parent process'te çalıştır (fork yok).
int is_executable(char *path)
Dosyanın var olup olmadığını ve çalıştırılabilir olup olmadığını kontrol et.
char * find_cmd_path(t_shell *shell, char *cmd)
Ana PATH arama fonksiyonu.
int setup_redirs(t_shell *shell, t_cmd *cmd)
Tüm redirectionları uygula.
int wait_for_child(pid_t pid)
Child process'i bekle ve exit status al EINTR: sinyal gelirse waitpid'i tekrar dene (zombie bırakma).
int save_std_fds(int *saved_fds)
stdin ve stdout'u kaydet (builtin için)
int restore_std_fds(int *saved_fds)
Kaydedilen fd'leri geri yükle.
Minishell ana header dosyası